package com.gccloud.design.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gccloud.design.entity.OptButtonBranchRelEntity;
import com.gccloud.design.entity.OptButtonEntity;
import com.gccloud.starter.core.vo.PageVO;

import java.util.Map;

/**
 * 实现功能【操作按钮配置业务层】
 *
 * @author hu.hongdou
 * @date 2022/2/21
 */
public interface ButtonConfigService extends IService<OptButtonEntity> {

    /**
     * 查询按钮
     *
     * @param buttonName 查询条件
     * @param pageObj    分页条件
     */
    Map<String, Object> newQueryButton(String buttonName, PageVO pageObj);

    /**
     * 查询按钮分支-新表结构
     */
    Map<String, Object> newQueryButtonBranch(Integer buttonId, PageVO pageObj);

    /**
     * 新增按钮
     *
     * @param entity 按钮实体类
     */
    boolean newAddButton(OptButtonEntity entity);

    /**
     * 更新按钮
     *
     * @param entity 按钮实体类
     */
    boolean newModifyButton(OptButtonEntity entity);

    /**
     * 删除按钮
     *
     * @param buttonId 按钮主键
     */
    boolean newDeleteButton(Long buttonId);

    /**
     * 新增按钮关系分支
     *
     * @param entity 按钮分支关系实体类
     */
    boolean newAddButtonBranch(OptButtonBranchRelEntity entity);

    /**
     * 删除按钮关系分支
     *
     * @param buttonId 按钮主键
     */
    boolean newDeleteButtonBranchRel(int buttonId, int optBranchId);

    /**
     * 查询流程业务类型
     */
    Map<String, Object> queryBusinessType();

    /**
     * 查询操作分支
     */
    Map<String, Object> queryOptButtonBranch(Integer buttonId, String businessTypeId);

    /**
     * 获取环节操作按钮列表
     */
    Map<String, Object> getLinkButton(String tacheId, PageVO pageObj);

    /**
     * 查询环节未配置的操作按钮
     */
    Map<String, Object> queryButtonByTacheId(String tacheId, PageVO pageObj);
}
